export const DistributionCreator = [
  { inputs: [], stateMutability: 'nonpayable', type: 'constructor' },
  { inputs: [], name: 'CampaignAlreadyExists', type: 'error' },
  { inputs: [], name: 'CampaignDoesNotExist', type: 'error' },
  { inputs: [], name: 'CampaignDurationBelowHour', type: 'error' },
  { inputs: [], name: 'CampaignRewardTokenNotWhitelisted', type: 'error' },
  { inputs: [], name: 'CampaignRewardTooLow', type: 'error' },
  { inputs: [], name: 'CampaignSouldStartInFuture', type: 'error' },
  { inputs: [], name: 'InvalidLengths', type: 'error' },
  { inputs: [], name: 'InvalidParam', type: 'error' },
  { inputs: [], name: 'InvalidSignature', type: 'error' },
  { inputs: [], name: 'NotGovernor', type: 'error' },
  { inputs: [], name: 'NotGovernorOrGuardian', type: 'error' },
  { inputs: [], name: 'NotSigned', type: 'error' },
  { inputs: [], name: 'ZeroAddress', type: 'error' },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'address',
        name: 'previousAdmin',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'newAdmin',
        type: 'address',
      },
    ],
    name: 'AdminChanged',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'beacon',
        type: 'address',
      },
    ],
    name: 'BeaconUpgraded',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'uint32',
        name: 'campaignType',
        type: 'uint32',
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: '_fees',
        type: 'uint256',
      },
    ],
    name: 'CampaignSpecificFeesSet',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: '_distributor',
        type: 'address',
      },
    ],
    name: 'DistributorUpdated',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      { indexed: true, internalType: 'address', name: 'user', type: 'address' },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'userFeeRebate',
        type: 'uint256',
      },
    ],
    name: 'FeeRebateUpdated',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: '_feeRecipient',
        type: 'address',
      },
    ],
    name: 'FeeRecipientUpdated',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'uint256',
        name: '_fees',
        type: 'uint256',
      },
    ],
    name: 'FeesSet',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      { indexed: false, internalType: 'uint8', name: 'version', type: 'uint8' },
    ],
    name: 'Initialized',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'bytes32',
        name: '_messageHash',
        type: 'bytes32',
      },
    ],
    name: 'MessageUpdated',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        components: [
          { internalType: 'bytes32', name: 'campaignId', type: 'bytes32' },
          { internalType: 'address', name: 'creator', type: 'address' },
          { internalType: 'address', name: 'rewardToken', type: 'address' },
          { internalType: 'uint256', name: 'amount', type: 'uint256' },
          { internalType: 'uint32', name: 'campaignType', type: 'uint32' },
          { internalType: 'uint32', name: 'startTimestamp', type: 'uint32' },
          { internalType: 'uint32', name: 'duration', type: 'uint32' },
          { internalType: 'bytes', name: 'campaignData', type: 'bytes' },
        ],
        indexed: false,
        internalType: 'struct CampaignParameters',
        name: 'campaign',
        type: 'tuple',
      },
    ],
    name: 'NewCampaign',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        components: [
          { internalType: 'bytes32', name: 'rewardId', type: 'bytes32' },
          { internalType: 'address', name: 'uniV3Pool', type: 'address' },
          { internalType: 'address', name: 'rewardToken', type: 'address' },
          { internalType: 'uint256', name: 'amount', type: 'uint256' },
          {
            internalType: 'address[]',
            name: 'positionWrappers',
            type: 'address[]',
          },
          { internalType: 'uint32[]', name: 'wrapperTypes', type: 'uint32[]' },
          { internalType: 'uint32', name: 'propToken0', type: 'uint32' },
          { internalType: 'uint32', name: 'propToken1', type: 'uint32' },
          { internalType: 'uint32', name: 'propFees', type: 'uint32' },
          { internalType: 'uint32', name: 'epochStart', type: 'uint32' },
          { internalType: 'uint32', name: 'numEpoch', type: 'uint32' },
          {
            internalType: 'uint32',
            name: 'isOutOfRangeIncentivized',
            type: 'uint32',
          },
          { internalType: 'uint32', name: 'boostedReward', type: 'uint32' },
          { internalType: 'address', name: 'boostingAddress', type: 'address' },
          { internalType: 'bytes', name: 'additionalData', type: 'bytes' },
        ],
        indexed: false,
        internalType: 'struct DistributionParameters',
        name: 'distribution',
        type: 'tuple',
      },
      {
        indexed: true,
        internalType: 'address',
        name: 'sender',
        type: 'address',
      },
    ],
    name: 'NewDistribution',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'token',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256',
      },
    ],
    name: 'RewardTokenMinimumAmountUpdated',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'token',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'toggleStatus',
        type: 'uint256',
      },
    ],
    name: 'TokenWhitelistToggled',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'implementation',
        type: 'address',
      },
    ],
    name: 'Upgraded',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'bytes32',
        name: 'messageHash',
        type: 'bytes32',
      },
      { indexed: true, internalType: 'address', name: 'user', type: 'address' },
    ],
    name: 'UserSigned',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      { indexed: true, internalType: 'address', name: 'user', type: 'address' },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'toggleStatus',
        type: 'uint256',
      },
    ],
    name: 'UserSigningWhitelistToggled',
    type: 'event',
  },
  {
    inputs: [],
    name: 'BASE_9',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'CHAIN_ID',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'HOUR',
    outputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'address', name: '', type: 'address' }],
    name: '_nonces',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'acceptConditions',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'bytes32', name: '_campaignId', type: 'bytes32' }],
    name: 'campaign',
    outputs: [
      {
        components: [
          { internalType: 'bytes32', name: 'campaignId', type: 'bytes32' },
          { internalType: 'address', name: 'creator', type: 'address' },
          { internalType: 'address', name: 'rewardToken', type: 'address' },
          { internalType: 'uint256', name: 'amount', type: 'uint256' },
          { internalType: 'uint32', name: 'campaignType', type: 'uint32' },
          { internalType: 'uint32', name: 'startTimestamp', type: 'uint32' },
          { internalType: 'uint32', name: 'duration', type: 'uint32' },
          { internalType: 'bytes', name: 'campaignData', type: 'bytes' },
        ],
        internalType: 'struct CampaignParameters',
        name: '',
        type: 'tuple',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          { internalType: 'bytes32', name: 'campaignId', type: 'bytes32' },
          { internalType: 'address', name: 'creator', type: 'address' },
          { internalType: 'address', name: 'rewardToken', type: 'address' },
          { internalType: 'uint256', name: 'amount', type: 'uint256' },
          { internalType: 'uint32', name: 'campaignType', type: 'uint32' },
          { internalType: 'uint32', name: 'startTimestamp', type: 'uint32' },
          { internalType: 'uint32', name: 'duration', type: 'uint32' },
          { internalType: 'bytes', name: 'campaignData', type: 'bytes' },
        ],
        internalType: 'struct CampaignParameters',
        name: 'campaignData',
        type: 'tuple',
      },
    ],
    name: 'campaignId',
    outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    name: 'campaignList',
    outputs: [
      { internalType: 'bytes32', name: 'campaignId', type: 'bytes32' },
      { internalType: 'address', name: 'creator', type: 'address' },
      { internalType: 'address', name: 'rewardToken', type: 'address' },
      { internalType: 'uint256', name: 'amount', type: 'uint256' },
      { internalType: 'uint32', name: 'campaignType', type: 'uint32' },
      { internalType: 'uint32', name: 'startTimestamp', type: 'uint32' },
      { internalType: 'uint32', name: 'duration', type: 'uint32' },
      { internalType: 'bytes', name: 'campaignData', type: 'bytes' },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'bytes32', name: '_campaignId', type: 'bytes32' }],
    name: 'campaignLookup',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'uint32', name: '', type: 'uint32' }],
    name: 'campaignSpecificFees',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'core',
    outputs: [{ internalType: 'contract ICore', name: '', type: 'address' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          { internalType: 'bytes32', name: 'campaignId', type: 'bytes32' },
          { internalType: 'address', name: 'creator', type: 'address' },
          { internalType: 'address', name: 'rewardToken', type: 'address' },
          { internalType: 'uint256', name: 'amount', type: 'uint256' },
          { internalType: 'uint32', name: 'campaignType', type: 'uint32' },
          { internalType: 'uint32', name: 'startTimestamp', type: 'uint32' },
          { internalType: 'uint32', name: 'duration', type: 'uint32' },
          { internalType: 'bytes', name: 'campaignData', type: 'bytes' },
        ],
        internalType: 'struct CampaignParameters',
        name: 'newCampaign',
        type: 'tuple',
      },
    ],
    name: 'createCampaign',
    outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          { internalType: 'bytes32', name: 'campaignId', type: 'bytes32' },
          { internalType: 'address', name: 'creator', type: 'address' },
          { internalType: 'address', name: 'rewardToken', type: 'address' },
          { internalType: 'uint256', name: 'amount', type: 'uint256' },
          { internalType: 'uint32', name: 'campaignType', type: 'uint32' },
          { internalType: 'uint32', name: 'startTimestamp', type: 'uint32' },
          { internalType: 'uint32', name: 'duration', type: 'uint32' },
          { internalType: 'bytes', name: 'campaignData', type: 'bytes' },
        ],
        internalType: 'struct CampaignParameters[]',
        name: 'campaigns',
        type: 'tuple[]',
      },
    ],
    name: 'createCampaigns',
    outputs: [{ internalType: 'bytes32[]', name: '', type: 'bytes32[]' }],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          { internalType: 'bytes32', name: 'rewardId', type: 'bytes32' },
          { internalType: 'address', name: 'uniV3Pool', type: 'address' },
          { internalType: 'address', name: 'rewardToken', type: 'address' },
          { internalType: 'uint256', name: 'amount', type: 'uint256' },
          {
            internalType: 'address[]',
            name: 'positionWrappers',
            type: 'address[]',
          },
          { internalType: 'uint32[]', name: 'wrapperTypes', type: 'uint32[]' },
          { internalType: 'uint32', name: 'propToken0', type: 'uint32' },
          { internalType: 'uint32', name: 'propToken1', type: 'uint32' },
          { internalType: 'uint32', name: 'propFees', type: 'uint32' },
          { internalType: 'uint32', name: 'epochStart', type: 'uint32' },
          { internalType: 'uint32', name: 'numEpoch', type: 'uint32' },
          {
            internalType: 'uint32',
            name: 'isOutOfRangeIncentivized',
            type: 'uint32',
          },
          { internalType: 'uint32', name: 'boostedReward', type: 'uint32' },
          { internalType: 'address', name: 'boostingAddress', type: 'address' },
          { internalType: 'bytes', name: 'additionalData', type: 'bytes' },
        ],
        internalType: 'struct DistributionParameters',
        name: 'newDistribution',
        type: 'tuple',
      },
    ],
    name: 'createDistribution',
    outputs: [
      { internalType: 'uint256', name: 'distributionAmount', type: 'uint256' },
    ],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          { internalType: 'bytes32', name: 'rewardId', type: 'bytes32' },
          { internalType: 'address', name: 'uniV3Pool', type: 'address' },
          { internalType: 'address', name: 'rewardToken', type: 'address' },
          { internalType: 'uint256', name: 'amount', type: 'uint256' },
          {
            internalType: 'address[]',
            name: 'positionWrappers',
            type: 'address[]',
          },
          { internalType: 'uint32[]', name: 'wrapperTypes', type: 'uint32[]' },
          { internalType: 'uint32', name: 'propToken0', type: 'uint32' },
          { internalType: 'uint32', name: 'propToken1', type: 'uint32' },
          { internalType: 'uint32', name: 'propFees', type: 'uint32' },
          { internalType: 'uint32', name: 'epochStart', type: 'uint32' },
          { internalType: 'uint32', name: 'numEpoch', type: 'uint32' },
          {
            internalType: 'uint32',
            name: 'isOutOfRangeIncentivized',
            type: 'uint32',
          },
          { internalType: 'uint32', name: 'boostedReward', type: 'uint32' },
          { internalType: 'address', name: 'boostingAddress', type: 'address' },
          { internalType: 'bytes', name: 'additionalData', type: 'bytes' },
        ],
        internalType: 'struct DistributionParameters[]',
        name: 'distributions',
        type: 'tuple[]',
      },
    ],
    name: 'createDistributions',
    outputs: [{ internalType: 'uint256[]', name: '', type: 'uint256[]' }],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [],
    name: 'defaultFees',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'uint256', name: 'index', type: 'uint256' }],
    name: 'distribution',
    outputs: [
      {
        components: [
          { internalType: 'bytes32', name: 'campaignId', type: 'bytes32' },
          { internalType: 'address', name: 'creator', type: 'address' },
          { internalType: 'address', name: 'rewardToken', type: 'address' },
          { internalType: 'uint256', name: 'amount', type: 'uint256' },
          { internalType: 'uint32', name: 'campaignType', type: 'uint32' },
          { internalType: 'uint32', name: 'startTimestamp', type: 'uint32' },
          { internalType: 'uint32', name: 'duration', type: 'uint32' },
          { internalType: 'bytes', name: 'campaignData', type: 'bytes' },
        ],
        internalType: 'struct CampaignParameters',
        name: '',
        type: 'tuple',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    name: 'distributionList',
    outputs: [
      { internalType: 'bytes32', name: 'rewardId', type: 'bytes32' },
      { internalType: 'address', name: 'uniV3Pool', type: 'address' },
      { internalType: 'address', name: 'rewardToken', type: 'address' },
      { internalType: 'uint256', name: 'amount', type: 'uint256' },
      { internalType: 'uint32', name: 'propToken0', type: 'uint32' },
      { internalType: 'uint32', name: 'propToken1', type: 'uint32' },
      { internalType: 'uint32', name: 'propFees', type: 'uint32' },
      { internalType: 'uint32', name: 'epochStart', type: 'uint32' },
      { internalType: 'uint32', name: 'numEpoch', type: 'uint32' },
      {
        internalType: 'uint32',
        name: 'isOutOfRangeIncentivized',
        type: 'uint32',
      },
      { internalType: 'uint32', name: 'boostedReward', type: 'uint32' },
      { internalType: 'address', name: 'boostingAddress', type: 'address' },
      { internalType: 'bytes', name: 'additionalData', type: 'bytes' },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'distributor',
    outputs: [{ internalType: 'address', name: '', type: 'address' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'address', name: '', type: 'address' }],
    name: 'feeRebate',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'feeRecipient',
    outputs: [{ internalType: 'address', name: '', type: 'address' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'uint32', name: 'start', type: 'uint32' },
      { internalType: 'uint32', name: 'end', type: 'uint32' },
      { internalType: 'uint32', name: 'skip', type: 'uint32' },
      { internalType: 'uint32', name: 'first', type: 'uint32' },
    ],
    name: 'getCampaignsBetween',
    outputs: [
      {
        components: [
          { internalType: 'bytes32', name: 'campaignId', type: 'bytes32' },
          { internalType: 'address', name: 'creator', type: 'address' },
          { internalType: 'address', name: 'rewardToken', type: 'address' },
          { internalType: 'uint256', name: 'amount', type: 'uint256' },
          { internalType: 'uint32', name: 'campaignType', type: 'uint32' },
          { internalType: 'uint32', name: 'startTimestamp', type: 'uint32' },
          { internalType: 'uint32', name: 'duration', type: 'uint32' },
          { internalType: 'bytes', name: 'campaignData', type: 'bytes' },
        ],
        internalType: 'struct CampaignParameters[]',
        name: '',
        type: 'tuple[]',
      },
      { internalType: 'uint256', name: 'lastIndexCampaign', type: 'uint256' },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'uint32', name: 'epochStart', type: 'uint32' },
      { internalType: 'uint32', name: 'epochEnd', type: 'uint32' },
      { internalType: 'uint32', name: 'skip', type: 'uint32' },
      { internalType: 'uint32', name: 'first', type: 'uint32' },
    ],
    name: 'getDistributionsBetweenEpochs',
    outputs: [
      {
        components: [
          { internalType: 'bytes32', name: 'rewardId', type: 'bytes32' },
          { internalType: 'address', name: 'uniV3Pool', type: 'address' },
          { internalType: 'address', name: 'rewardToken', type: 'address' },
          { internalType: 'uint256', name: 'amount', type: 'uint256' },
          {
            internalType: 'address[]',
            name: 'positionWrappers',
            type: 'address[]',
          },
          { internalType: 'uint32[]', name: 'wrapperTypes', type: 'uint32[]' },
          { internalType: 'uint32', name: 'propToken0', type: 'uint32' },
          { internalType: 'uint32', name: 'propToken1', type: 'uint32' },
          { internalType: 'uint32', name: 'propFees', type: 'uint32' },
          { internalType: 'uint32', name: 'epochStart', type: 'uint32' },
          { internalType: 'uint32', name: 'numEpoch', type: 'uint32' },
          {
            internalType: 'uint32',
            name: 'isOutOfRangeIncentivized',
            type: 'uint32',
          },
          { internalType: 'uint32', name: 'boostedReward', type: 'uint32' },
          { internalType: 'address', name: 'boostingAddress', type: 'address' },
          { internalType: 'bytes', name: 'additionalData', type: 'bytes' },
        ],
        internalType: 'struct DistributionParameters[]',
        name: '',
        type: 'tuple[]',
      },
      {
        internalType: 'uint256',
        name: 'lastIndexDistribution',
        type: 'uint256',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'getValidRewardTokens',
    outputs: [
      {
        components: [
          { internalType: 'address', name: 'token', type: 'address' },
          {
            internalType: 'uint256',
            name: 'minimumAmountPerEpoch',
            type: 'uint256',
          },
        ],
        internalType: 'struct RewardTokenAmounts[]',
        name: '',
        type: 'tuple[]',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'uint32', name: 'skip', type: 'uint32' },
      { internalType: 'uint32', name: 'first', type: 'uint32' },
    ],
    name: 'getValidRewardTokens',
    outputs: [
      {
        components: [
          { internalType: 'address', name: 'token', type: 'address' },
          {
            internalType: 'uint256',
            name: 'minimumAmountPerEpoch',
            type: 'uint256',
          },
        ],
        internalType: 'struct RewardTokenAmounts[]',
        name: '',
        type: 'tuple[]',
      },
      { internalType: 'uint256', name: '', type: 'uint256' },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'contract ICore', name: '_core', type: 'address' },
      { internalType: 'address', name: '_distributor', type: 'address' },
      { internalType: 'uint256', name: '_fees', type: 'uint256' },
    ],
    name: 'initialize',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'address', name: '', type: 'address' }],
    name: 'isWhitelistedToken',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'message',
    outputs: [{ internalType: 'string', name: '', type: 'string' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'messageHash',
    outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'proxiableUUID',
    outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'contract IERC20[]', name: 'tokens', type: 'address[]' },
      { internalType: 'address', name: 'to', type: 'address' },
    ],
    name: 'recoverFees',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'address', name: '', type: 'address' }],
    name: 'rewardTokenMinAmounts',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    name: 'rewardTokens',
    outputs: [{ internalType: 'address', name: '', type: 'address' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'uint32', name: 'campaignType', type: 'uint32' },
      { internalType: 'uint256', name: '_fees', type: 'uint256' },
    ],
    name: 'setCampaignFees',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'address', name: '_feeRecipient', type: 'address' },
    ],
    name: 'setFeeRecipient',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'uint256', name: '_defaultFees', type: 'uint256' },
    ],
    name: 'setFees',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'string', name: '_message', type: 'string' }],
    name: 'setMessage',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'address', name: '_distributor', type: 'address' },
    ],
    name: 'setNewDistributor',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'address[]', name: 'tokens', type: 'address[]' },
      { internalType: 'uint256[]', name: 'amounts', type: 'uint256[]' },
    ],
    name: 'setRewardTokenMinAmounts',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'address', name: 'user', type: 'address' },
      { internalType: 'uint256', name: 'userFeeRebate', type: 'uint256' },
    ],
    name: 'setUserFeeRebate',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'bytes', name: 'signature', type: 'bytes' }],
    name: 'sign',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          { internalType: 'bytes32', name: 'campaignId', type: 'bytes32' },
          { internalType: 'address', name: 'creator', type: 'address' },
          { internalType: 'address', name: 'rewardToken', type: 'address' },
          { internalType: 'uint256', name: 'amount', type: 'uint256' },
          { internalType: 'uint32', name: 'campaignType', type: 'uint32' },
          { internalType: 'uint32', name: 'startTimestamp', type: 'uint32' },
          { internalType: 'uint32', name: 'duration', type: 'uint32' },
          { internalType: 'bytes', name: 'campaignData', type: 'bytes' },
        ],
        internalType: 'struct CampaignParameters',
        name: 'newCampaign',
        type: 'tuple',
      },
      { internalType: 'bytes', name: 'signature', type: 'bytes' },
    ],
    name: 'signAndCreateCampaign',
    outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'address', name: 'user', type: 'address' }],
    name: 'toggleSigningWhitelist',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'address', name: 'token', type: 'address' }],
    name: 'toggleTokenWhitelist',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'address', name: 'newImplementation', type: 'address' },
    ],
    name: 'upgradeTo',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      { internalType: 'address', name: 'newImplementation', type: 'address' },
      { internalType: 'bytes', name: 'data', type: 'bytes' },
    ],
    name: 'upgradeToAndCall',
    outputs: [],
    stateMutability: 'payable',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'address', name: '', type: 'address' }],
    name: 'userSignatureWhitelist',
    outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [{ internalType: 'address', name: '', type: 'address' }],
    name: 'userSignatures',
    outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
    stateMutability: 'view',
    type: 'function',
  },
] as const
